package com.lsnu.ehr.jpa;

import java.util.List;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import com.lsnu.ehr.entity.Depa;

// JpaRepository jpa操作接口，定义了常用的增删查改方法
// 泛型<Depa, Long> 指定操作类和类的主键类型
// JpaRepository 接口不需要实现就可以对实体类进行增删查改
// springjpa 框架会代理接口方法进行实现

public interface DepaRepository extends JpaRepository<Depa, Long>,JpaSpecificationExecutor<Depa> {

	/**
	 * 根据部门id查询下级部门！
	 * @param id
	 * @return
	 */
	@Query(value = "SELECT * FROM t_depa as d1 INNER JOIN t_depa as d2 ON d1.depa_higher_id = d2.id where d2.id=?1", nativeQuery = true)
	List<Depa> findDepaHById(Long id);
	
	/**
	 * 根据部门id查询部门下的员工！
	 * @param id
	 * @return
	 */
	@Query(value = "SELECT * FROM t_depa INNER JOIN t_emp ON d1.depa_higher_id = d2.id where d2.id=?1", nativeQuery = true)
	List<Depa> findEmpById(Long id);
	
	/**
	 * 根据部门名称进行分页查找
	 * @param page
	 * @param name
	 * @return
	 */
	Page<Depa> findByDepaName(Pageable page,String name);
	List<Depa> findByDepaName(String name);
}
